(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

Rewrite Strategy: FULL

(1) DecreasingLoopProof (EQUIVALENT transformation)

The following loop(s) give(s) rise to the lower bound Ω(n1):
The rewrite sequence
din(der(plus(X, Y))) →+ u21(din(der(X)), X, Y)
gives rise to a decreasing loop by considering the right hand sides subterm at position [0].
The pumping substitution is [X / plus(X, Y)].
The result substitution is [ ].

(2) BOUNDS(n^1, INF)

(3) RenamingProof (EQUIVALENT transformation)

Renamed function symbols to avoid clashes with predefined symbol.

(4) Obligation:

Runtime Complexity Relative TRS:
The TRS R consists of the following rules:

din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

S is empty.
Rewrite Strategy: FULL

(5) TypeInferenceProof (BOTH BOUNDS(ID, ID) transformation)

Infered types.

(6) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

(7) OrderProof (LOWER BOUND(ID) transformation)

Heuristically decided to analyse the following defined symbols:
din

(8) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

The following defined symbols remain to be analysed:
din

(9) NoRewriteLemmaProof (LOWER BOUND(ID) transformation)

Could not prove a rewrite lemma for the defined symbol din.

(10) Obligation:

TRS:
Rules:
din(der(plus(X, Y))) → u21(din(der(X)), X, Y)
u21(dout(DX), X, Y) → u22(din(der(Y)), X, Y, DX)
u22(dout(DY), X, Y, DX) → dout(plus(DX, DY))
din(der(times(X, Y))) → u31(din(der(X)), X, Y)
u31(dout(DX), X, Y) → u32(din(der(Y)), X, Y, DX)
u32(dout(DY), X, Y, DX) → dout(plus(times(X, DY), times(Y, DX)))
din(der(der(X))) → u41(din(der(X)), X)
u41(dout(DX), X) → u42(din(der(DX)), X, DX)
u42(dout(DDX), X, DX) → dout(DDX)

Types:
din :: plus:der:times → dout
der :: plus:der:times → plus:der:times
plus :: plus:der:times → plus:der:times → plus:der:times
u21 :: dout → plus:der:times → plus:der:times → dout
dout :: plus:der:times → dout
u22 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
times :: plus:der:times → plus:der:times → plus:der:times
u31 :: dout → plus:der:times → plus:der:times → dout
u32 :: dout → plus:der:times → plus:der:times → plus:der:times → dout
u41 :: dout → plus:der:times → dout
u42 :: dout → plus:der:times → plus:der:times → dout
hole_dout1_0 :: dout
hole_plus:der:times2_0 :: plus:der:times
gen_plus:der:times3_0 :: Nat → plus:der:times

Generator Equations:
gen_plus:der:times3_0(0) ⇔ hole_plus:der:times2_0
gen_plus:der:times3_0(+(x, 1)) ⇔ der(gen_plus:der:times3_0(x))

No more defined symbols left to analyse.